package com.demo.api.service.role;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.demo.api.vo.user.RoleVo;
import com.demo.client.model.user.SysRole;

import java.util.List;

/**
 * @author Tan-Bowen
 * @version 1.0
 * @description TODO
 * @date 2021/8/13 10:02
 */
public interface IRoleService {


    /**
     * @author Tan-Bowen
     * @description TODO 角色列表分页
     * @date 2021/8/25 14:36
     * @param [page, select]
     * @paramType [com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.demo.api.model.user.SysRole>, com.demo.api.vo.user.RoleVo.Select]
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.demo.api.vo.user.RoleVo.PageList>
     */
    IPage<RoleVo.PageList> rolePage(Page<SysRole> page, RoleVo.Select select);

    /**
     * @author Tan-Bowen
     * @description TODO 创建角色
     * @date 2021/8/25 14:36
     * @param [create]
     * @paramType [com.demo.api.vo.user.RoleVo.Create]
     * @return void
     */
    void create(RoleVo.Create create);

    /**
     * @author Tan-Bowen
     * @description TODO 编辑角色
     * @date 2021/8/25 14:36
     * @param [update]
     * @paramType [com.demo.api.vo.user.RoleVo.Update]
     */
    void update(RoleVo.Update update);

    /**
     * @author Tan-Bowen
     * @description TODO 获取当前部门和子级部门的角色
     * @date 2021/9/6 10:49
     * @param []
     * @paramType []
     * @return java.util.List<com.demo.api.vo.user.RoleVo.PageList>
     */
    List<RoleVo.PageList> getDeptRole();

    /**
     * @author Tan-Bowen
     * @description TODO 设置角色权限
     * @date 2021/9/13 16:37
     * @param [roleId, ids]
     * @paramType [java.lang.Long, java.util.List<java.lang.Long>]
     * @return void
     */
    void settingRolePower(Long roleId, List<Long> ids);

    /**
     * @author Tan-Bowen
     * @description TODO 删除角色
     * @date 2021/9/20 11:19
     * @param [roleId]
     * @paramType [java.lang.Long]
     * @return void
     */
    void deleteRole(Long roleId);
}
